import { DmpSubTaskType, ImportExplainFileType } from '../types'

/* 文本------------------------------- */
// tips：普通 = 除相似度之外其他的
// 普通-Excel无标注
// 普通-TXT无标注
// 普通-压缩包无标注
// 分类-Excel有标注
// 分类-TXT有标注
// 分类-压缩包默认格式有标注
// 分类-压缩包json有标注
// 实体-Excel有标注
// 实体-压缩包默认格式有标注
// 实体-压缩包json有标注
// 三元组-Excel有标注
// 三元组-压缩包默认格式有标注
// 三元组-压缩包json有标注
// 相似度-Excel无标注
// 相似度-TXT无标注
// 相似度-压缩包无标注
// 相似度-Excel有标注
// 相似度-TXT有标注
// 相似度-压缩包txt有标注
// 相似度-压缩包json有标注
/* ------------------------------- */
/*图片----------目前迭代只有图形分类和目标检测----*/
//tips：图片无标注导入格式一致
//图片-图片无标注
//图片-压缩包无标注
//图片-平台默认格式有标注
//图像分类-以文件夹命名分类有标注
//目标检测-xml（特指voc）有标注
//目标检测-json（特指coco）有标注
/*图片----------------------------------------------*/

/* 根据 任务类型 + 说明类型 + 有无标注信息 判断导入说明该展示哪一条 */
export const getImportExplain = (subTaskType: DmpSubTaskType, explainType: ImportExplainFileType, hasMarkInfo: boolean) => {
  // 根据标注类型判断导入说明
  switch (subTaskType) {
    // 图片
    case DmpSubTaskType.imgClass:
    case DmpSubTaskType.imgObjDetect:
    case DmpSubTaskType.imgSegmentation:
      // 无标注
      if (!hasMarkInfo) {
        // 图片-图片无标注
        if (explainType === 'imgImg') {
          return '图片-图片无标注'
        }
        // 图片-压缩包无标注
        else if (explainType === 'imgZip') {
          return '图片-压缩包无标注'
        }
      }
      // 有标注
      // 图片-平台默认格式有标注
      if (explainType === 'imgZipFormat') {
        return '图片-平台默认格式有标注'
      }

      // 图像分类
      if (subTaskType === DmpSubTaskType.imgClass) {
        // 图像分类-以文件夹命名分类有标注
        if (explainType === 'imgZipDir') {
          return '图像分类-以文件夹命名分类有标注'
        }
      }

      // 目标检测
      if (subTaskType === DmpSubTaskType.imgObjDetect) {
        // 目标检测-xml（特指voc）有标注
        if (explainType === 'imgZipXml') {
          return '目标检测-xml（特指voc）有标注'
        }
        // 目标检测-json（特指coco）有标注
        else if (explainType === 'imgZipJson') {
          return '目标检测-json（特指coco）有标注'
        }
      }

      return ''

    // 文本
    case DmpSubTaskType.textClass:
    case DmpSubTaskType.textNamedEntity:
    case DmpSubTaskType.textTriple:
    case DmpSubTaskType.textSimilarity:
      // 普通-Excel无标注
      if (
        (subTaskType === DmpSubTaskType.textClass && explainType === 'excel' && !hasMarkInfo) ||
        (subTaskType === DmpSubTaskType.textNamedEntity && explainType === 'excel' && !hasMarkInfo) ||
        (subTaskType === DmpSubTaskType.textTriple && explainType === 'excel' && !hasMarkInfo)
      ) {
        return '普通-Excel无标注'
      }
      // 普通-TXT无标注
      else if (
        (subTaskType === DmpSubTaskType.textClass && explainType === 'txt' && !hasMarkInfo) ||
        (subTaskType === DmpSubTaskType.textNamedEntity && explainType === 'txt' && !hasMarkInfo) ||
        (subTaskType === DmpSubTaskType.textTriple && explainType === 'txt' && !hasMarkInfo)
      ) {
        return '普通-TXT无标注'
      }
      // 普通-压缩包无标注
      else if (
        (subTaskType === DmpSubTaskType.textClass && explainType === 'zip' && !hasMarkInfo) ||
        (subTaskType === DmpSubTaskType.textNamedEntity && explainType === 'zip' && !hasMarkInfo) ||
        (subTaskType === DmpSubTaskType.textTriple && explainType === 'zip' && !hasMarkInfo)
      ) {
        return '普通-压缩包无标注'
      }
      // 分类-Excel有标注
      else if (subTaskType === DmpSubTaskType.textClass && explainType === 'excel' && hasMarkInfo) {
        return '分类-Excel有标注'
      }
      // 分类-TXT有标注
      else if (subTaskType === DmpSubTaskType.textClass && explainType === 'txt' && hasMarkInfo) {
        return '分类-TXT有标注'
      }
      // 分类-压缩包默认格式有标注
      else if (subTaskType === DmpSubTaskType.textClass && explainType === 'format' && hasMarkInfo) {
        return '分类-压缩包默认格式有标注'
      }
      // 分类-压缩包json有标注
      else if (subTaskType === DmpSubTaskType.textClass && explainType === 'json' && hasMarkInfo) {
        return '分类-压缩包json有标注'
      }
      // 实体-Excel有标注
      else if (subTaskType === DmpSubTaskType.textNamedEntity && explainType === 'excel' && hasMarkInfo) {
        return '实体-Excel有标注'
      }
      // 实体-压缩包默认格式有标注
      else if (subTaskType === DmpSubTaskType.textNamedEntity && explainType === 'format' && hasMarkInfo) {
        return '实体-压缩包默认格式有标注'
      }
      // 实体-压缩包json有标注
      else if (subTaskType === DmpSubTaskType.textNamedEntity && explainType === 'json' && hasMarkInfo) {
        return '实体-压缩包json有标注'
      }
      // 三元组-Excel有标注
      else if (subTaskType === DmpSubTaskType.textTriple && explainType === 'excel' && hasMarkInfo) {
        return '三元组-Excel有标注'
      }
      // 三元组-压缩包默认格式有标注
      else if (subTaskType === DmpSubTaskType.textTriple && explainType === 'format' && hasMarkInfo) {
        return '三元组-压缩包默认格式有标注'
      }
      // 三元组-压缩包json有标注
      else if (subTaskType === DmpSubTaskType.textTriple && explainType === 'json' && hasMarkInfo) {
        return '三元组-压缩包json有标注'
      }
      // 相似度-Excel无标注
      else if (subTaskType === DmpSubTaskType.textSimilarity && explainType === 'excel' && !hasMarkInfo) {
        return '相似度-Excel无标注'
      }
      // 相似度-TXT无标注
      else if (subTaskType === DmpSubTaskType.textSimilarity && explainType === 'txt' && !hasMarkInfo) {
        return '相似度-TXT无标注'
      }
      // 相似度-压缩包无标注
      else if (subTaskType === DmpSubTaskType.textSimilarity && explainType === 'zip' && !hasMarkInfo) {
        return '相似度-压缩包无标注'
      }
      // 相似度-Excel有标注
      else if (subTaskType === DmpSubTaskType.textSimilarity && explainType === 'excel' && hasMarkInfo) {
        return '相似度-Excel有标注'
      }
      // 相似度-TXT有标注
      else if (subTaskType === DmpSubTaskType.textSimilarity && explainType === 'txt' && hasMarkInfo) {
        return '相似度-TXT有标注'
      }
      // 相似度-压缩包默认格式有标注
      else if (subTaskType === DmpSubTaskType.textSimilarity && explainType === 'text-zip-txt' && hasMarkInfo) {
        return '相似度-压缩包默认格式有标注'
      }
      // 相似度-压缩包json有标注
      else if (subTaskType === DmpSubTaskType.textSimilarity && explainType === 'json' && hasMarkInfo) {
        return '相似度-压缩包json有标注'
      }
      return ''

    default:
      return ''
  }
}

/* 根据 任务类型 + 说明类型 + 有无标注信息 判断是否需要显示对应文件行 */
export const getFileRuleLineShow = (subTaskType: DmpSubTaskType, explainType: ImportExplainFileType, hasMarkInfo: boolean) => {
  switch (subTaskType) {
    // 图片
    case DmpSubTaskType.imgClass:
    case DmpSubTaskType.imgObjDetect:
    case DmpSubTaskType.imgSegmentation:
      // 图片显示
      if (explainType === 'imgImg') {
        // 无标注信息时显示
        return !hasMarkInfo
      }
      // 压缩包显示
      if (explainType === 'imgZip') {
        return true
      }

      return false

    // 文本
    case DmpSubTaskType.textClass:
    case DmpSubTaskType.textNamedEntity:
    case DmpSubTaskType.textTriple:
    case DmpSubTaskType.textSimilarity:
      // excel显示
      if (explainType === 'excel') {
        return true
      }
      // zip显示
      if (explainType === 'zip') {
        return true
      }
      // txt显示
      if (explainType === 'txt') {
        //文本类型无标注的情况下，都显示txt
        if (!hasMarkInfo) {
          return true
        }
        // 文本分类和相似度，有标注信息的情况下，显示文件行
        if ([DmpSubTaskType.textClass, DmpSubTaskType.textSimilarity].includes(subTaskType)) {
          return true
        }
        return false
      }

      return false
    default:
      break
  }
}
